package com.eastfair.venueservice.dto;

import com.eastfair.venueservice.enumeration.ServiceCategoryAttributeEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.List;

/**
 * <p>
 * 实体类
 * 服务分类
 * </p>
 *
 * @author lyw
 * @since 2022-07-13
 */
@Data
@ApiModel(value = "ServiceCategoryUpdateDTO", description = "服务分类")
public class ServiceCategoryDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "主键")
    private Long id;

    /**
     * 是否启用（确认状态）：1是 已确认；0否 未确认
     */
    @ApiModelProperty(value = "是否启用（确认状态）：1是 已确认；0否 未确认")
    private Integer isEnabled;
    /**
     * 是否删除：1是；0否
     */
    @ApiModelProperty(value = "是否删除：1是；0否")
    private Integer isDeleted;
    /**
     * 项目id
     */
    @ApiModelProperty(value = "项目id")
    private Long projectId;
    /**
     * 子系统id
     */
    @ApiModelProperty(value = "子系统id")
    private Long subsystemId;
    /**
     * 租户id
     */
    @ApiModelProperty(value = "租户id")
    private Long tenantId;
    /**
     * 服务分类名称
     */
    @ApiModelProperty(value = "服务分类名称")
    @Size(max = 30, message = "服务分类名称长度不能超过30")
    @NotEmpty(message = "服务分类名称不能为空",groups = {Save.class,Update.class})
    private String serviceCategoryName;
    /**
     * 排序
     */
    @ApiModelProperty(value = "排序")
    private Integer sort;
    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    @Size(max = 255, message = "备注长度不能超过255")
    private String remark;
    /**
     * 分类编码
     */
    @ApiModelProperty(value = "分类编码")
    @Size(max = 255, message = "分类编码长度不能超过255")
    private String categoryCode;

    /**
     * 分类类型：0是综合；1是主场
     */
    @ApiModelProperty(value = "分类类型：0是综合；1是主场")
    private Integer categoryType;

    /**
     * 是否管理：0不是；1是
     */
    @ApiModelProperty(value = "是否管理：0不是；1是")
    private Integer isManage;

    /**
     * 展会id
     */
    @ApiModelProperty(value = "展会id")
    private Long exhibitionManageId;

    /**
     * 服务规格
     */
    @ApiModelProperty(value = "服务规格")
    private List<ServiceSpecsDTO> serviceSpecsDTOS;
    /**
     * 分类编号定义
     */
    @ApiModelProperty(value = "分类编号定义")
    @Size(max = 255, message = "分类编号定义长度不能超过255")
    private String specsCodePrefix;
    /**
     * 所属类型 #{WATER_POINT:水点;ELECTRIC_BOX:电箱;GAS_POINT:气点;LIFTING_POINT:吊点;NETWORK:网络}
     */
    @ApiModelProperty(value = "所属类型 #{WATER_POINT:水点;ELECTRIC_BOX:电箱;GAS_POINT:气点;LIFTING_POINT:吊点;NETWORK:网络}")
    private ServiceCategoryAttributeEnum attribute;

    /**
     * 保存校验标识
     */
    public interface Save{};

    /**
     * 修改校验标识
     */
    public interface Update{};
}
